Preprocesamiento de archivos de código G de gran tamaño
El CNC15_LargeGCode.project el proyecto de ejemplo se encuentra en el directorio de instalación de CODESYS debajo ..\CODESYS SoftMotion\Examples.
El proyecto de ejemplo muestra cómo procesar archivos de código G de gran tamaño. Dado que los archivos de gran tamaño son especialmente comunes como salida de los sistemas CAD/CAM, este caso se muestra a modo
Los sistemas CAD/CAM suelen generar archivos de código G con varios cientos de miles de líneas. Consisten en segmentos lineales muy cortosG1), normalmente en el intervalo de 100 micrómetros a un milímetro. Estos segmentos lineales cortos trazan el contorno de la pieza. No forman un camino suave. La tangente normalmente salta entre los segmentos lineales
El ejemplo muestra cómo leer estos archivos grandes de manera eficiente con requisitos de memoria constantes y cómo lograr una curva de velocidad suave en una ruta que consta de tantos segmentos lineales cortos. El contorno original de la pieza de trabajo se reconstruye mientras se preprocesa
Estructura de la solicitud
La estructura es típica de las aplicaciones de CNC. El código G se lee en la tarea en segundo planoPathTask), y el preprocesamiento de rutas también tiene lugar aquí. La interpolación se realiza en la tarea del busMainTask).
Lectura de archivos de gran tamaño
Para mantener corta la latencia al principio del procesamiento del código G, se utiliza un bucle en la tarea en segundo plano. Para simplificar, se utiliza un contador para la condición de cancelación. Según la aplicación, el código G y el rendimiento del PLC, pueden resultar útiles otras condiciones de cancelación, como un temporizador. El ciclo finalizará antes de alcanzar esta condición de cancelación cuando la cola de rutas
// Set this value depending on your other tasks, PLC performance, and G-Code counter := 25; WHILE counter > 0 AND (poqDataOut = 0 OR_ELSE (NOT poqDataOut^.bFull AND NOT poqDataOut^.bEndOfList)) DO <Read G-Code and process it> counter := counter - 1; END_WHILE
Mediante la canalización en el preprocesamiento, incluso los archivos de código G de gran tamaño se pueden leer con requisitos de memoria pequeños y constantes. Los tamaños de las colas se eligen para que sean lo suficientemente grandes como para permitir una previsión suficiente de los bloques de funciones respectivos
La cola de salida de SMC_NCInterpreter es también la cola de entrada de SMC_SmoothMerge. Se reservan un total de 128+3 elementos para la cola de salida. 3 es una SMC_OutQueue y quedan 128 para usarse como previsión para SMC_SmoothMerge. SMC_SmoothMerge combina un máximo de 128 segmentos lineales cortos en una sola ranura.
La cola de salida de SMC_SmoothMerge es también la cola de entrada de SMC_SmoothPath. SMC_SmoothPath requiere al menos 2 elementos, más una reserva de 3 elementos, como previsión. Si las funciones M se encuentran entre dos elementos suavizados, se necesitarán más elementos según el número de
La cola de salida de SMC_SmoothMerge es también la cola de entrada de SMC_Interpolator. Una previsión de 100 elementos es adecuada para la mayoría de las aplicaciones. Para obtener más información, consulte lo siguiente: Preprocesamiento de rutas y tamaños de cola.
/// Buffer of the interpreter, lookahead for SMC_SmoothMerge aBufIp : ARRAY[0..130] OF SMC_GeoInfo; /// Buffer of SMC_SmoothMerge aBufSmm : ARRAY[0..15] OF SMC_GeoInfo; /// Buffer of SMC_SmoothPath, lookahead for SMC_Interpolator aBufSmp : ARRAY[0..99] OF SMC_GeoInfo;
Preprocesamiento de segmentos lineales
El SMC_SmoothMerge bloque funcional garantiza una curva de velocidad suave en los muchos segmentos lineales muy cortos. Combina tantos segmentos lineales consecutivos como sea posible en una sola ranura, manteniendo las tolerancias especificadas. En este ejemplo, se permite una desviación máxima de 0,1 mm en X e YPARAMETERS.piMaxDifference).
Lectura de los segmentos lineales cortos

Combinación de varios segmentos lineales en splines mediante
SMC_SmoothMerge.
Suavizar entre las estrías con
SMC_SmoothPathporque, como se ha visto anteriormente, las splines no se conectan tangencialmente entre sí.
Puesta en servicio
Cree la aplicación y descárguela en un controlador.
Abra la traza y descárguela al controlador.
Inicie la aplicación.
Puede realizar un seguimiento del procesamiento del código G.